奶龙最后时候没了😂😂。 好像感觉大家都很重视。。
T1
分类讨论:
1. c<ac < ac<a,显然有当 c+d≥ac+d \ge ac+d≥a 时,可以,否则不可以;
2. a≤c≤ba \le c \le ba≤c≤b,显然可以。
3. a>ba > ba>b,显然有当 c−d≤bc-d \le bc−d≤b 时,可以,否则不可以;
T2
由于只能从前往后扫,所以必然要扫一段前缀,因此要找到最后一个重复的元素,看见 AiA_iAi 并不大,用桶存就可以。
具体方法就是从后往前扫,找到第一个拥有重复元素的索引,输出就可以了。
T3
好像写复杂了。。。
说实话就是做着题做崩溃的。
透析几何可以 O(1)\mathcal O(1)O(1) 处理出。
很有兴致和大家讲解。
首先将这个圆的运动过程分成 7 段,具体看代码。
设摩天轮的圆心为 OOO,从摩天轮的圆心向该时刻的目标点作一条线,记其与圆的交点为 AAA,再做一条线与经过出发点的一条直径交于点 BBB。则显然有 ∠AOB=SiT∠AOB = \frac{S_i}{T}∠AOB=TSi ,记为 θ\thetaθ,有 OB=sinθOB=\sin \thetaOB=sinθ,AB=cosθAB=\cos\thetaAB=cosθ。因此处理好三角形位置对于 y,zy,zy,z 轴的影响就可以了 (就是这被卡了 3 次)。
接下来说确定两个点后如何计算角度。
首先先算出两点 x,yx,yx,y 轴意义下的距离,勾股就能计算,记为 uuu。接下来设 zzz 的差为 vvv,设最终答案为 Δ\varDeltaΔ,则首先有 tanΔ=vu\tan \varDelta = \frac{v}{u}tanΔ=uv ,所以 arctanvu=Δ\arctan \frac{v}{u} = \varDeltaarctanuv =Δ。
cmath 库自带三角函数。
T4
维护一个 unordered_map 来记录每个的出现位置,同时为了压缩路径,可以采用类似并查集的方法,记录最近一个可以到达的位置,就是这样了。
T5
并不算很难。
dp 记录状态下的 a,ac,acg 子串个数,类似的题很多。
更展开来讲,判断每一位是哪一个字符,然后进行一定操作:举例计算 acg 的方法:在每一个字符 g,将该状态的 acg 加上该状态下的 ac 子串个数。
答案计算的方法,就是对于每一个字符 o,把它前面的 acg 子串个数加入答案即可。
注意动态取模,开 long long。
担心空间不够,开了滚动数组。
T6
预处理线性筛出最大值范围内的质数,然后对每个查询做质因数分解就可以了,没什么技术含量。
T7
对于一个质数,显然无法操作。
对于一个非质数,显然有策略是先选最小的质因数,然后选该数 ×2\times 2×2,再选 222,就可以选择区间 [3,n2][3,\frac{n}{2}][3,2n ] 的所有质数,然后进一步选择所有的合数。所以不能选的数就是 nnn,111,(n2,n](\frac{n}{2},n](2n ,n] 的所有质数,还是线性筛出最大值范围内的所有质数,用前缀和预处理出,设前缀数组为 qzqzqz,每次查询的答案就是 qzn−qzn2qz_{n}-qz{\frac{n}{2}}qzn −qz2n 。
T8
不会,问这位大佬或者官方。